//package cn.iocoder.yudao.module.vote.calc;
//
//import cn.hutool.core.collection.CollUtil;
//import cn.hutool.core.util.StrUtil;
//import cn.iocoder.yudao.module.vote.controller.admin.voterecorddetail.vo.VoteRecordCountVO;
//import com.alibaba.fastjson.JSONObject;
//import org.apache.ibatis.reflection.MetaObject;
//import org.apache.ibatis.reflection.SystemMetaObject;
//
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * @description:
// * @author: moving
// * @date: 2023/3/17 16:48
// */
//public class ExpressParse {
//
//    /**
//     * 开始标识
//     */
//    private String beginPost;
//    /**
//     * 结束标识
//     */
//    private String endPost;
//
//    /**
//     * 参数列表
//     */
//    private List<String> parseParamsList;
//    /**
//     * 表达式
//     */
//    private String express;
//
//    public ExpressParse(String express,String beginPost,String endPost){
//        this.beginPost = beginPost;
//        this.endPost = endPost;
//        this.express = express;
//        this.parseParamsList = new ArrayList<>();
//        this.parseParams();
//    }
//
//
//    private void parseParams(){
//        if (CollUtil.isNotEmpty(this.parseParamsList)) {
//            return;
//        }
//        String parse = this.express;
//        while(parse.contains(this.beginPost)){
//            int indexStart = parse.indexOf(this.beginPost);
//            int indexEnd = parse.indexOf(this.endPost);
//            this.parseParamsList.add(parse.substring(indexStart+1,indexEnd));
//            parse = parse.substring(indexEnd+1);
//        }
//    }
//
//
//    public String parse(VoteRecordCountVO recordCountVO){
//
//        MetaObject metaObject = SystemMetaObject.forObject(recordCountVO);
//
//        String expressParse = this.express;
//
//        for(String params:this.parseParamsList){
//            String replace = this.beginPost+params+this.endPost;
//            expressParse = expressParse.replace(replace, String.valueOf(metaObject.getValue(params)));
//        }
//        return expressParse;
//    }
//
//    public static void main(String[] args) {
//        String express = "{excellentCount}*100+{qualifiedCount}*0.8+{baseQualifiedCount}*0.6+{unqualifiedCount}*0.4";
//        ExpressParse parse = new ExpressParse(express,"{","}");
//        VoteRecordCountVO recordCountVO = new VoteRecordCountVO();
//        recordCountVO.setVoteId(0);
//        recordCountVO.setUserResultId(0);
//        recordCountVO.setExcellentCount(0);
//        recordCountVO.setQualifiedCount(0);
//        recordCountVO.setBaseQualifiedCount(0);
//        recordCountVO.setUnqualifiedCount(0);
//        recordCountVO.setWaiverCount(0);
//        recordCountVO.setQuantifiedScore(0.0F);
//        recordCountVO.setMaxScore(0.0F);
//        recordCountVO.setMinScore(0.0F);
//        recordCountVO.setIsManager(false);
//        recordCountVO.setIsDept(false);
//        recordCountVO.setTotal(0);
//        recordCountVO.setTenantId(0L);
//
//        parse.parse(recordCountVO);
//
//    }
//
//}
